<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/lib/layui-v2.6.3/css/layui.css" media="all">
    <script src="/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>

    
<!-- 注意：如果你直接复制所有代码到本地，上述 JS 路径需要改成你本地的 -->
    <style>
        .layui-table-cell {
            height: 60px;
            line-height: 60px;
        }
        /* height: auto !important;
          white-space: normal;
          padding: 0px;
      } */

        th .layui-table-cell {
            height: 30px;
            line-height: 30px;
        }

        th .laytable-cell-1-0-7 {
            height: 30px;
            line-height: 30px;
        }

        .layui-table img {
            width: 100px;
            height: 60px;
        }
    </style>

       <!-- 数据表格 数据由js动态渲染-->
       <table  id="seatTable" lay-filter="test"></table>

</head>

<script type="text/html" id="toolbarDemo">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加一个预约的学生 </button>
        <button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="bar"> 性别柱状图 </button>
        <button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="pie"> 年纪比例饼图 </button>
        <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="ratio"> 预约学生和实到学生比例图 </button>
    </div>
</script>

<script type="text/html" id="barDemo">
    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">查看</a>
</script>

<script>

    layui.use(['form', 'table'], function () {

        var table = layui.table,
            form = layui.form,
            $ = layui.jquery;
        
            
        // 暂时不用token
      //  var token = JSON.parse(localStorage.getItem("token"));

        $.ajaxSetup({
            // 发送cookie
            xhrFields: {
                withCredentials: true
            },
            headers: {   //这是一个令牌  在请求头中设置token  是复杂请求，会发送预检查请求 导致在删除的时候预检查进行了删除，真实请求却删除失败
             //   "token": token
            }
        })
        // var token = JSON.parse(localStorage.getItem("token"));  将toke转换为js对象

        //渲染数据表格
        table.render({
            elem: '#seatTable',    //  渲染的数据表格的id
            //url:'students.json'
            url:'http://localhost:8080/library/seat/list'    //数据表格的数据源 
            //,headers:{"token":token}
            , title: '教室列表'
            , toolbar: '#toolbarDemo' //开启头部工具栏，并为其绑定左侧模板
            , defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义，去除该参数即可
                title: '提示'
                , layEvent: 'LAYTABLE_TIPS'
                , icon: 'layui-icon-tips'
            }]
            //, contentType: "application/x-www-form-urlencoded"
            , cols: [[
                { type: 'checkbox', fixed: 'left' }  //checkbox  前面添加复选框
                , { field: 'id', title: 'ID', width: 80, fixed: 'left', unresize: true, sort: true }
                , { field: 'roomId', title: '教室编号', width: 120 } //, edit: 'text'
                , { field: 'reserveNumber', title: '预约的人数', width: 200 }  //, edit: 'text'
               // , { field: 'arriveNumber', title: '实际到达教室的人数', width: 200} //, edit: 'text' 
                , { field: 'number', title: '可容纳的最大学生数量', width: 200 }  //添加了 edit 属性可以在线编辑 , edit: 'text'
                , { field: 'status', title: '是否已满', width: 100, templet:function(res){
                    if(res.status == false){
                        return  '<a class="" style="color:#2aed2a">否</a>';

                    }else {
                        return  '<a class="" style="color:#ff0000">是</a>';
                    }
                } }
                , { field: 'right', title: '操作', toolbar: '#barDemo', width: 150 }
            ]]
            , page: true        // 开启分页   自动向 后台传参    page第几页   limit等价于size
        })

        //头工具栏事件
        table.on('toolbar(test)', function (obj) {
            console.log(obj);
            var checkStatus = table.checkStatus(obj.config.id);

            switch (obj.event) {
                case 'add':
                    layer.open({
                        title: '添加一个学生',
                        shade: 0.2,
                        type: 2,
                        shadeClose: true,   // 点别的地方 是否关闭当前 layer    true收关闭   false 不关闭
                        area: ['80%', '100%'],
                        fixed: true, //不固定
                        maxmin: true,
                        content: './studentadd.html',
                        end: function (index) {

                            table.reload('seatTable');
                        }
                    });
                    break;
                case 'bar':
                    layer.open({
                        title: '学生性别分布',
                        shade: 0.2,
                        type: 2,
                        shadeClose: true,   // 点别的地方 是否关闭当前 layer    true收关闭   false 不关闭
                        area: ['80%', '100%'],
                        fixed: true, //不固定
                        maxmin: true,
                        content: './sexbar.html',
                        end: function (index) {
                        }
                    });
                    break;

                case 'pie':
                    layer.open({
                        title: '学生年纪分布',
                        shade: 0.2,
                        type: 2,
                        shadeClose: true,   // 点别的地方 是否关闭当前 layer    true收关闭   false 不关闭
                        area: ['80%', '100%'],
                        fixed: true, //不固定
                        maxmin: true,
                        content: './gradepie.html',
                        end: function (index) {
                        }
                    });
                    break;

                case 'ratio':
                    layer.open({
                        title: '预约人数和实到人数柱状图',
                        shade: 0.2,
                        type: 2,
                        shadeClose: true,   // 点别的地方 是否关闭当前 layer    true收关闭   false 不关闭
                        area: ['80%', '100%'],
                        fixed: true, //不固定
                        maxmin: true,
                        content: './studentbar.html',
                        end: function (index) {
                        }
                    });
                    break;
            };
        });



        //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
        table.on('tool(test)', function(obj){
            var data = obj.data; //获得当前行数据
            //获得 lay-event 对应的值（也可以是表头的 event 参数对应的值）
            var layEvent = obj.event;
            var tr = obj.tr; //获得当前行 tr 的 DOM 对象（如果有的话）
            if(layEvent === 'del'){ //删除
                
                localStorage.setItem("seat", JSON.stringify(data));  // 把数据存到 localStorage   字符串的形式存入

                layer.open({
                    title: '查看教室详细信息',
                    shade: 0.2,
                    type: 2,
                    shadeClose: true,   // 点别的地方 是否关闭当前 layer    true收关闭   false 不关闭
                    area: ['90%', '100%'],
                    fixed: true, //不固定
                    maxmin: true,
                    content: './roomDetail.html',
                     end: function (index) {
                       //  table.reload('seatTable');
                    }
                });
 
            } else if(layEvent === 'edit'){ //编辑
                // 向服务端发送更新请求
                // 同步更新缓存对应的值

                // 把要修改的数据 存到 localStorage ， 跳转到修改页面  再把它取出来展示 要修改的数据
                localStorage.setItem("seat", JSON.stringify(data));  // 把数据存到 localStorage   字符串的形式存入

                layer.open({
                    title: '修改教室信息',
                    shade: 0.2,
                    type: 2,
                    shadeClose: true,   // 点别的地方 是否关闭当前 layer    true收关闭   false 不关闭
                    area: ['80%', '100%'],
                    fixed: true, //不固定
                    maxmin: true,
                    content: './seatEdit.html',
                    end: function (index) {
                        table.reload('seatTable');
                    }
                });
            }
        });

    })
</script>
</html>